package com.ajx.blog.service.api;

import com.ajx.blog.entity.Article;
import com.ajx.blog.entity.ArticleCheckMessage;
import com.ajx.blog.entity.ArticleDistribute;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;

public interface ArticleDistributeService extends IService<ArticleDistribute> {

    /**
     * @param {Integer} articleId 文章ID
     * @return {boolean} 是否分配成功
     * 
     * @description: 给文章审核员分配文章
     */
    boolean assigningTask(Integer articleId);

    /**
     * @param {Integer} adminId 管理员ID
     * @param {Integer} articleId 文章ID
     * @param {String}  astatus 审核状态 -1审核不通过 0 审核通过
     * @param {String}  msg 管理员提交的审核信息
     * @return {boolean} 审核操作是否完成 true/false
     * 
     * @description: 管理员审核文章
     */
    boolean checkArticle(Integer adminId, Integer articleId, String astatus, String msg);

    /**
     * @param {Integer} adminId 管理员ID
     * @param {Integer} articleId 文章ID
     * @return {boolean} 上报操作是否完成 true/false
     * 
     * @description: 普通文章审核员将文章交给审核经理审核
     */
    boolean reportArticle(Integer adminId, Integer articleId);

    /**
     * @param {Integer} adminId 管理员ID
     * @param {Integer} page 当前页码数
     * @return { PageInfo<Article>} 封装的分页数据,未审核的文章列表(只有aid,title,createtime字段)
     * 
     * @description: 管理员查询未审核的文章,用于列表展示页面,不用查询全部信息,详细信息在详情页面查询
     */
    PageInfo<Article> selectunCheckedArticle(Integer adminId, Integer page);

    /**
     * @param {Integer} adminId 管理员ID
     * @param {Integer} page 当前页码数
     * @return { PageInfo<ArticleCheckMessage>}
     *         封装的分页数据,审核过的文章审核信息列表
     *         articleId文章ID,remark文章标题,title审核评价,createtime审核时间
     * 
     * @description: 管理员查询审核过的文章审核信息列表,用于列表展示页面
     */
    PageInfo<ArticleCheckMessage> selectCheckedArticle(Integer adminId, Integer page);

    /**
     * @param {Integer} articleId 文章ID
     * @return {Article} 被查出来的文章对象
     * 
     * @description: 根据文章id查找文章
     */
    Article selectArticleById(Integer articleId);

}
